<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style></style>
  </head>
  <body>
    <div>
      <h1>引用计数算法实现原理</h1>
      <div>
        <h2>引用计数算法</h2>
        <p>
          1.核心思想:设置引用数，判断当前引用数是否为0,为0-GC就开始工作,回收该对象的内存,释放空间
        </p>
        <p>2.引用计数器</p>
        <p>
          3.引用关系改变时修改引用数字(例如一个对象空间,有一个变量指向就加一,不再引用就减一)
        </p>
        <p>4.引用数字为0时立即回收</p>
      </div>
    </div>
    <script>
      const user1 = { age: 11 };
      const user2 = { age: 22 };
      const user3 = { age: 33 };

      //   这里一直引用着上面的3个对象,所以引用计数器,不为零,不会被回收
      const nameList = [user1.age, user2.age, user3.age];

      function fn() {
        //当函数调用完毕后这两个遍历不被调用,此时引用计数器为0,应该被回收
        const num1 = 1;
        const num2 = 2;
      }
      fn();
    </script>
  </body>
</html>
